Page({

  /**
   * 页面的初始数据
   */
  data: {
    keyword: '',
    thingData: [],
    pageData: [],
    page: 1,
    total: 0,
    pageSize: 20,
    BASE_URL: 'http://127.0.0.1:9100',
    tabData: ['最新', '最热', '推荐'],
    selectTabIndex: -1, // 初始化为 -1，表示未选择
    tabUnderLeft: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  // 返回方法
  goBack() {
    wx.navigateBack({
      delta: 1 // 返回上一级页面
    });
  },

  onInputChange: function(e) {
    this.setData({
      keyword: e.detail.value
    });
  },

  onSearch: function() {
    const keyword = this.data.keyword.trim();
    if (keyword) {
      let data = { keyword };
      if (this.data.selectTabIndex !== -1) {
        const sort = this.getSortByIndex(this.data.selectTabIndex);
        data.sort = sort;
      }
      this.getThingList(data);
    }
  },

  handleDetail: function(e) {
    const item = e.currentTarget.dataset.item;
    wx.navigateTo({
      url: `/pages/thingDetail/thingDetail?id=${item.id}`
    });
  },

  getThingList: function(data) {
    wx.request({
      url: 'http://localhost:9100/api/thing/list',
      method: 'GET',
      data: data,
      success: (res) => {
        if (res.data.code === 200) {
          const { BASE_URL } = this.data;
          const thingData = res.data.data.map(item => {
            // 拼接完整的图片URL
            item.cover = `${BASE_URL}/api/staticfiles/image/${item.cover}`;
            return item;
          });
          this.setData({
            thingData,
            total: thingData.length
          });
          this.changePage(1);
        } else {
          wx.showToast({
            title: '数据获取失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.showToast({
          title: '请求失败',
          icon: 'none'
        });
      }
    });
  },

  changePage: function(page) {
    const { thingData, pageSize } = this.data;
    const start = (page - 1) * pageSize;
    const pageData = thingData.slice(start, start + pageSize);
    this.setData({
      page,
      pageData
    });
  },

  selectTab: function(e) {
    const index = e.currentTarget.dataset.index;
    const { keyword } = this.data;
    if (keyword) {
      const sort = this.getSortByIndex(index);
      const data = { keyword, sort };
      this.getThingList(data);
    }
    // 修正滑块位置的计算方式
    const tabWidth = 100 / this.data.tabData.length;
    const tabUnderLeft = index * tabWidth;
    this.setData({
      selectTabIndex: index,
      tabUnderLeft
    });
  },

  getSortByIndex: function(index) {
    switch (index) {
      case 0:
        return 'recent';
      case 1:
        return 'hot';
      case 2:
        return 'recommend';
      default:
        return null;
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    const { page, total, pageSize } = this.data;
    if (page * pageSize < total) {
      this.changePage(page + 1);
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})